#ifndef __BLOCK_IMP_HH__
#define __BLOCK_IMP_HH__

#include <opengl/texture.h>
#include <opengl/shader.h>
#include <opengl/vertex.h>
#include <vector>

namespace mc
{

class BlockImp
{
public:
    //! @brief 绘制
    static void drawInstantiation(opengl::VertexArray& vao, opengl::Texture* texture, unsigned int count, uint64_t size);
    
    //! @brief 更新实例化矩阵
    static void updatePositions(opengl::VertexArray& vao, opengl::VertexBuffer& vbo, std::vector<glm::mat4>& instanceMatrices);

    //! @brief 初始化 vao
    static void initVertexArray(opengl::VertexArray& vao, opengl::VertexBuffer& vbo, uint64_t size, const void *data);

    //! @brief 加载方块纹理对象
    static opengl::Texture* loadTexture(const std::string& texPath);
};

}

#endif